#include<iostream>



template<typename T>
struct A
{

    T a;

};



//继承的 模板类 如果声明模板类型  ， 其子类 不再是类模板 ，是普通类
// struct B : public A<int>
// {

// };


// // 继承的模板类 如果 不明确 模板类型 ，子类继续是 类模板
// template<typename T>
// struct B : public A<T>
// {

// };



template<typename T1,typename T2>
struct pair
{
    T1 first;
    T2 second;
};


// 全特化：声明全部的模板类型
template<>
struct pair<int , std::string>
{
    int first;
    std::string second;
};


// 偏特化：声明部分的模板类型
template<typename T>
struct pair<int , T>
{
    int first;
    T second;
};




int main()
{
    // A<int> num;

    // B num;
    // B<int> num;
    // num.a = 10;
    // std::cout<<num.a<<std::endl;

    pair<int ,std::string> p = {1,std::string("zahngsan")};

    return 0;
}